package com.hsylient.mybatis.mapper;

import com.hsylient.mybatis.dao.StudentDO;
import org.apache.ibatis.annotations.MapKey;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * 学生映射器
 *
 * @author Hsylient
 * @date 2022/12/14
 */
public interface StudentMapper {

    /**
     * 选择一个
     *
     * @param id id
     * @return {@link StudentDO}
     */
    StudentDO selectOne(@Param("id") Integer id);

    /**
     * 按名称查询
     *
     * @param name 名字
     * @return {@link Map}<{@link String}, {@link StudentDO}>
     */
    @MapKey("name")
    Map<String, StudentDO> queryByName(@Param("name") String name);


    /**
     * 查询所有
     *
     * @return {@link List}<{@link StudentDO}>
     */
    List<StudentDO> selectAll();


    Integer insertOneGenericId(@Param("student")StudentDO studentDO);

    /**
     * 添加一个
     *
     * @param studentDO 学生做
     * @return {@link Integer}
     */
    Integer addOne(@Param("studentDO") StudentDO studentDO);

    /**
     * order by出生
     *
     * @param birthday 生日
     * @return {@link List}<{@link StudentDO}>
     */
    List<StudentDO> orderByBir(@Param("birthday")String birthday);

    /**
     * 参数映射
     *
     * @param map 地图
     * @return {@link StudentDO}
     */
    StudentDO paramOfMap(@Param("map")Map<String, String> map);

    StudentDO queryByObject(@Param("studentDO") StudentDO studentDO);

    Integer addOneGenericId(@Param("student") StudentDO studentDO);
}
